<template>
  <div class="flex items-center">
    <el-icon :size="20" v-if="modelValue" class="mr-2">
      <component :is="modelValue"/>
    </el-icon>
    <el-select filterable :modelValue="modelValue" class="m-2" placeholder="请选择图标" 
       @change="handleChange">
            <el-option
              v-for="item in icons"
              :key="item"
              :label="item"
              :value="item"
            >

            <div class="flex items-center justify-center">
              <el-icon>
                <component :is="item"/>
              </el-icon>
              <span class="text-gray-500">{{ item }}</span>
            </div>

          </el-option>
    </el-select>
  </div>
</template>

<script setup>

defineProps({
  modelValue:String
})

import {ref} from 'vue'
import * as iconList from '@element-plus/icons-vue'

const icons = ref(Object.keys(iconList))

const emit = defineEmits(["update:modelValue"])
const handleChange = (icons)=>{ //监听变化，但结合emit事件让子组件变化的同时也通知了父组件
  emit("update:modelValue",icons)
}
</script>